package com.carbon.system.controller;

import cn.hutool.core.util.StrUtil;
import com.carbon.common.utils.JwtUtil;
import com.carbon.domain.common.ApiResult;
import com.carbon.system.entity.MenuVO;
import com.carbon.system.service.MenuService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@RequestMapping("/admin/system/role")
public class RoleMenuController {
    @Resource
    private MenuService menuService;


    @GetMapping("/menu")
    public ApiResult<List<MenuVO>> getRoleMenu(HttpServletRequest request) {
        try {
            // 1. 从请求头获取 token（格式：Bearer token值）
            String token = request.getHeader("token");
            if (StrUtil.isEmpty(token)) {
                return ApiResult.fail("token 不存在或格式错误");
            }
            token = token.replace("Bearer ", ""); // 去除 "Bearer " 前缀

            // 2. 校验 token 有效性
            if (!JwtUtil.isValidToken(token)) {
                return ApiResult.fail("token 无效或已过期");
            }

            // 3. 从 token 中获取 accountId（使用你的 JwtUtil 的 getTokenInfo 方法）
            Long accountId = JwtUtil.getTokenInfo(token, JwtUtil.JWT_ACCOUNT_ID);
            if (accountId == null) {
                return ApiResult.fail("token 中未包含 accountId");
            }

            // 4. 查询用户菜单并返回
            List<MenuVO> menus = menuService.getUserMenus(accountId);
            return ApiResult.ok(menus);
        } catch (Exception e) {
            return ApiResult.fail("获取菜单失败：" + e.getMessage());
        }
    }
}